1.IDEA中的其他操作
  a.IDEA的其他快捷键
   ctrl+N:根据名称搜索所有模块/工程下的类或接口
   ctrl+shift+N:根据名称搜索所有模块/工程下的 文件
   ctrl+H:看类或接口的继承体系
   ctrl+F12:展示该类的所有成员,而且可以搜索,直接跳转
   ctrl+鼠标左键:可以快速跳转到选中类/接口/方法/变量的定义位置
  b.IDEA导出jar包
    jar包:jar包本质上就是一个压缩包,jar包中一般存放.java或.class源文件
  c.IDEA导入jar包
    jar包中含有很多.class文件,如果将.class文件一个个传输给他人使用,非常繁琐
    而把jar包传输给别人,别人只需要引用这个jar包就可以使用里面所有.class文件
2.引用类型作为方法的形参和返回值
   a.普通类作为方法的形参和返回值
        当我们传递一个引用变量或者匿名对象给方法的形参,其实传递都是对象的地址值
        当我们在方法中返回一个引用变量或者匿名对象,其实返回的是这个对象的地址值
   b.抽象类作为方法的形参和返回值
        当抽象类作为方法的形参只能接收子类对象,本质上接收的是子类对象的地址值
        在该方法中使用这个形参遵循多态原则
        当抽象类作为方法的返回值类型时候,只能返回子类对象,本质上返回的是子类对象的地址值
        在返回到调用处使用引用变量,依然遵循多态原则
   c.接口作为方法的形参和返回值
        当接口作为方法的形参只能接收实现类对象,本质上接收的是实现类对象的地址值
        在该方法中使用这个形参遵循多态原则
        当接口作为方法的返回值类型时候,只能返回实现类对象,本质上返回的是实现类对象的地址值
        在返回到调用处使用引用变量,依然遵循多态原则
3.内部类
  内部类顾名思义就是在一个类的内部在定义一个类
  因为有些事物内部还含有其他事物,因此我们需要通过内部类的形式更加贴近于现实生活描述
  //人类
  class Person{
    //姓名,年龄
    //吃饭
  }
  //心脏
  class Heart{
    //左心房,右心房
    //跳动
  }

  class Person{
      //姓名,年龄
      //吃饭
      //心脏
      class Heart{
          //左心房,右心房
          //跳动
      }
  }
 a.成员内部类
    /**
     * 成员内部类:定义在成员位置(类中方法外)上的类
     *          可以用权限修饰符
     * 成员内部类编译后的形式:外部类名$内部类名.class
     */
    /**
     * 内部类中的成员调用格式
     *  外部类名.内部类名 引用变量名=new 外部类(参数).new 内部类(参数);
     *  引用变量名调用内部类成员
     */
     我们需要通过 外部类.this 和内部类的 this 区分
 b.局部内部类
    /**
     * 局部内部类:定义在局部位置
     * 局部内部类编译好的形式: 外部类$编号内部类名.class
     */